PVE intel直通核显 踩坑记录
目前仅有 Intel 11 (Tigerlake) / 12 / 13 / 14 代带核显 CPU 支持 SRIOV 核显虚拟化,非此类 CPU 不能 SRIOV 虚拟化。
为了达到在PVE虚拟机下可以使用PVE宿主机的核显来进行视频转码的目的,目前有一个可以使用并且在不同的Linux内核下通用的方法。
准备步骤
记得在PVE的控制面板的PCI设备不要选宿主机核显选项,不然重启之后会报错。
uname -a
根据 uname -a
反馈信息调整 header
的版本信息
apt update
apt upgrade
apt update
apt install -y git build-* dkms # 必要编译工具安装
apt install pve-headers-$(uname -r)
apt install pve-kernel-6.8.12-2-pve
proxmox-boot-tool kernel pin 6.8.12-2-pve
apt install pve-headers-6.8.12-2-pve
注:6.8.12-2 为示例,根据自己的替换
proxmox-boot-tool kernel list
查看是否生效
reboot
重启生效
拉取核显虚拟化驱动项目的源码
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd ~/i915-sriov-dkms
cp -a ~/i915-sriov-dkms/dkms.conf{,.bak}
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/ -j$(nproc)//g' ~/i915-sriov-dkms/dkms.conf
cat ~/i915-sriov-dkms/dkms.conf
如果 cat ~/i915-sriov-dkms/dkms.conf
这一步发现里面的 package_version
不对,手动改成内核版本号,如 6.8.12-2
DKMS 添加驱动源码管理并安装部署
链接内核源代码,并检查状态。确认内核显示已添加。
cp -r ~/i915-sriov-dkms /usr/src/i915-sriov-dkms-$KERNEL
ls /usr/src # 查看
cd /usr/src/i915-sriov-dkms-$KERNEL
dkms add .
dkms status
构建新内核并检查状态。验证是否显示已安装。这里是 2 核编译,可以自定义。
dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 2
GRUB 配置
解释:
i915.max_vfs=7
表示最多虚拟成 7 个设备
cp -a /etc/default/grub{,.bak}
sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"' /etc/default/grub
update-grub
update-initramfs -u -k all
工具软件安装
apt install sysfsutils -y
运行以下命令,查看/确认显卡所在的 PCIe 总线。通常是 00:02.0
lspci | grep VGA
运行以下命令, 如果 PCIe 总线编号不一致, 需要修改。
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 2" >> /etc/sysfs.conf
cat /etc/sysfs.conf
重启
reboot
此处结果应该从 1 条变成 3 条 (新增 2 个虚拟集显/显卡)
lspci | grep VGA
会显示次要 PCIe ID 1-2
dmesg | grep i915